隐马尔科夫链

3.1 隐马尔科夫链的概念

定义 如果随机过程 {(Xn,Sn),n>0} 满足以下条件, 则称为 隐马尔科夫链,

  1. 状态序列 {Xn,n>0} 是马尔科夫链并且不可观测, 状态空间为 S.

  2. 信号序列 {Sn,n>0} (非马尔科夫链) 是可观测的, 信号空间为 S.

  3. 进入状态 j 时以概率 p(sj) 发出信号 s, 其中 jS:sSp(sj)=1.

  4. 给定状态 j 时, p(sj) 独立于先前的状态与信号.

问题 0 已知信号序列, 计算状态的概率.

Fn(j):=P{Sn=sn,Xn=j}={pjp(s1j),n=1,p(snj)iFn1(i)Pij,n>1.

 

3.2 问题 1:计算产生信号序列的概率

问题 1 计算产生信号序列的概率.

思路 1.1 遍历算法

P{Sn=sn}=i1,,inp(s1i1)p(snin)pi1Pi1i2Pin1in.

备注 计算量大, 约 2nNn 次.

思路 1.2 向前递推

P{Sn=sn}=iFn(i).

备注 计算量较小, 约 nN 次.

思路 1.3 向后递推(略)

Bk(i):=P{Sk+1=sk+1,,Sn=snXk=i}={jPijp(snj),k=n1,jPijp(sk+1j)Bk+1(j),k<n1.

于是有 P{Sn=sn}=ipip(s1i)B1(i).

思路 1.4 前后递推; Forward-Backward 算法(略)

P{Sn=sn}=jFk(j)Bk(j)

 

3.3 问题 2:由信号序列预测状态序列

问题 2 已知信号序列, 预测前 n 个状态.

思路 2.1 预测单个状态, 使得到该状态的概率最大.(略)

P{Xk=jSn=sn}=P{Sn=sn,Xk=j}P{Sn=sn}=Fk(j)Bk(j)jFk(j)Bk(j).

于是 j^=argmaxjFk(j)Bk(j).

备注 这样可以使预测对的状态数的期望最大, 但是得到的未必是最可能状态序列.

思路 2.2 预测状态序列, 使得到整个轨迹的概率最大.

思路 2.2.1 遍历算法

P{Xn=(i1,,in)Sn=sn}=P{Xn=(i1,,iN),Sn=sn}P{Sn=sn}

于是 (i1,,in)=argmaxi1,,inP{Xn=(i1,,in)Sn=sn}.

备注 这样可以得到最可能状态序列, 但是计算量大.

思路 2.2.2 Viterbi 算法

Vk(j):=maxi1,ik1P{Xk1=(i1,,ik1),Xk=j,Sk=sk}={pjp(s1j),k=1,p(skj)maxiPijVk1(i),1<kn.

欲求最可能的状态序列, 先对每个 j 确定 V1(j), 再依次确定 Vn(j).

之后令 in=argmaxiVn(i), 再依次令 ik=argmaxiPi,ik+1Vk(i).